The TypeKinds of “Set”, “String”, “VariableArray” and “FixedArray” all represent “collections” of items.

The recommendation is to ignore TypeQualifiers when reading / processing “collections” Types entries. This is because:

  • the value of TypeQualifiers is fixed for each of these TypeKinds so communicates no additional information
  • the definitions of the possible “qualifiers” values are problematic and in some cases ambiguous
  • the properties described by the “qualifiers” are often implementation dependent (so, for example, may be different between MXF implementations and AAF implementations) – therefore, the TypeQualifiers may be misleading

“Set”

An instance of a Type with a TypeKind of “Set” is a collection of items where each item is identified by the item itself (or at least a part of it) – this means that each item must be unique within the collection and the order of items is not significant.

TypeSize can be:

  • Zero: this means that the collection can contain any number of items
  • Greater than zero: this means that the collection must contain exactly the specified number of items

BaseType must give the UL of a Type which has fixed size (that is, all instances of the referenced Type must be of the same size).

Some implementation notes:

  • In MXF a “Set” is implemented using the compound data type called a “batch”.
  • In Reg-XML it is not possible to restrict the number of items in a “Set”.
  • AAF and MXF place further restrictions on the BaseType. Reg-XML does not have these restrictions.

“String”

An instance of a Type with a TypeKind of “String” is an ordered collection of characters or integers.

TypeSize can be:

  • Zero: this means that the collection can contain any number of items
  • Greater than zero: this means that the collection must contain exactly the specified number of items

BaseType must give the UL of a Type which has a TypeKind of either “Character” or “Integer”.

Some implementation notes:

  • In MXF a “String” may, or may not, be zero-terminated.

“VariableArray”

An instance of a Type with a TypeKind of “VariableArray” is an ordered collection of items.

TypeSize must be zero: this means that the collection can contain any number of items.

BaseType must give the UL of a Type which has fixed size (that is, all instances of the referenced Type must be of the same size).

Some implementation notes:

  • In MXF a “VariableArray” is implemented using the compound data type called an “array”.

“FixedArray”

An instance of a Type with a TypeKind of “FixedArray” is an ordered collection of items.

TypeSize must be greater than zero: this means that the collection must contain exactly the specified number of items.

BaseType must give the UL of a Type which has fixed size (that is, all instances of the referenced Type must be of the same size).

Some implementation notes:

  • In MXF a “FixedArray” is implemented in the same way as a Type with a TypeKind of “Record”.